The objective of SaaS (Software as a Service) systems is to use software as a service to reduce users' purchase and maintenance costs of software. In the SaaS environment, a large number of users (tenants) share application instances and a database.
However, since the database system is shared among different tenants in the SaaS environment, heavy-duty database operations of one tenant may affect other tenants' normal use. Some operations in the database system, e.g., on-boarding of a tenant, data import/export, data migration, data backup/restore and the like during its operation, will occupy a large amount of disk I/O and CPU capacity, thus affecting the system's performance in processing other tenants' requests. A large scale data migration or import may last several hours, during which, the response time to requests of other tenants may be increased, or other tenants could even be unable to access the system normally, which is unacceptable for the other tenants.
Traditionally, the most common method for solving the problem is to process heavy duty requests asynchronously. In this method the system finds idle time to process heavy-duty requests to avoid affecting normal processing. However, such a manner of delayed response is unacceptable from the point of view of business requirements. In the SaaS environment, the tenant may not even be willing to agree to asynchronous processing of heavy duty requests. That is to say, in most situations, heavy-duty requests need to be responded to in real time, rather than being processed offline or asynchronously.
Another method is to perform rate control on tenant operations, for example, limiting the maximum amount of resources that each tenant can use. However, this prevents the resource utilization from being maximized, and the maximum sharing capability of the system can not be achieved from the perspective of the whole system. In the SaaS environment, resource utilization is a key consideration, and usually, it is necessary to maximize the resource utilization.
Therefore, the field needs a more effective method and apparatus for isolating performance influence of application database operations among tenants of the SaaS application.